package cn.lsh.main;

import cn.lsh.mapper.FriendMapper;
import cn.lsh.reducer.FriendReducer;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;

/**
 * 输出用户的间接关系数
 * tom hello hadoop cat
 * word hadoop hello hive
 * cat tom hive
 * mr hive hello
 * hive cat hadoop word hello mr
 * hadoop tom hive word
 * hello tom word hive mr
 * 后面是tom的好友列表，他们俩俩组成间接好友关系
 *
 * 分析：
 *  1、map把数据分成两张表，一张为直接好友关系，一张为间接好友关系，可以通过value设置0和1来区分
 *  2、key表示的好友关系，需要有对应顺序，确保好友关系key相等，比如hadoop tom的相互关系都表示成hadoop:tom
 *  3、reduce过滤为0的直接关系，统计没有直接好友关系的间接关系数
 */
public class FirendDriver extends BaseDriver {

	public static void main(String[] args) throws Exception {
	    buildJob(true);

	    job.setMapperClass(FriendMapper.class);
	    job.setMapOutputKeyClass(Text.class);
	    job.setMapOutputValueClass(IntWritable.class);

	    job.setReducerClass(FriendReducer.class);
	    job.setOutputKeyClass(Text.class);
	    job.setOutputValueClass(IntWritable.class);

	    setInputAndOutPut(args, true);

	    job.waitForCompletion(true);

	}
}
